package com.seadragon.app.ksr.model;

import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.PrecisionModel;


public class KsrConstants {
	public static final int MINIMUM_PASSWORD_LENGTH = 8;
	public static final String FIELD_NAME_BUSINESS_NAME = "businessName";
	public static final String FIELD_NAME_BUSINESS_TYPE = "businessType";
	public static final String FIELD_NAME_CATEGORIES = "categories";
	public static final String FIELD_NAME_SPECIALTY = "specialty";
	public static final String FIELD_NAME_PHONE_NUMBER = "phoneNumber";
	public static final String FIELD_NAME_DESCRIPTION = "description";
	public static final String FIELD_NAME_OFFICES = "offices";
	public static final String FIELD_NAME_ADDRESS = "address";
	public static final String FIELD_NAME_ADDRESSLINE1 = "addressLine1";
	public static final String FIELD_NAME_CITY = "city";
	public static final String FIELD_NAME_STATE = "state";
	public static final String FIELD_NAME_ZIP = "zip";
	public static final String FIELD_NAME_PRICE = "price";
	public static final String FIELD_NAME_USERNAME = "userName";
	public static final String FIELD_NAME_PASSWORD ="password";
	public static final String FIELD_NAME_EMAIL ="emailAddress";
	public static final String ERROR_MESSAGE_KEY_FIELD_REQUIRED = "field.required";
	public static final String ERROR_MESSAGE_KEY_FIELD_MIN_LENGTH = "field.min.length";
	public static final String ERROR_MESSAGE_KEY_OFFICE_REQUIRED = "one.office.required";
	public static final String DEFAULT_MESSAGE_KEY_INVALID_PASSWORD = "The password must be at least [" + MINIMUM_PASSWORD_LENGTH + "] characters in length.";
	public static final String ERROR_MESSAGE_KEY_INVALID_EMAIL = "invalid.email";
	public static final String ERROR_MESSAGE_KEY_PRICE_POSITIVE = "price.positive";
	public static final String DEFAULT_MESSAGE_KEY_INVALID_EMAIL = "The email address is not a valid email address.";
	public static final String SESSION_SCOPED_CUSTOMER = "customer";
	public static final String SESSION_SCOPED_BUSINESS = "business";
	public static final String RECENTLY_VIEWED_COOKIE_NAME = "ksr-recently-viewed";
	
	public static final GeometryFactory gf = new GeometryFactory(new PrecisionModel(), 4269);
	
	public static final int GEOCODED_THRESHOLD = 20;
	/**
	 * GeocoderResult{types=[street_address], formattedAddress='500 Market Street West, Gaithersburg, MD 20878, USA', addressComponents=[GeocoderAddressComponent{longName='500', shortName='500', types=[street_number]}, GeocoderAddressComponent{longName='Market Street West', shortName='Market St W', types=[route]}, GeocoderAddressComponent{longName='Kentlands', shortName='Kentlands', types=[neighborhood, political]}, GeocoderAddressComponent{longName='Gaithersburg', shortName='Gaithersburg', types=[locality, political]}, GeocoderAddressComponent{longName='9', shortName='9', types=[administrative_area_level_3, political]}, GeocoderAddressComponent{longName='Montgomery', shortName='Montgomery', types=[administrative_area_level_2, political]}, GeocoderAddressComponent{longName='Maryland', shortName='MD', types=[administrative_area_level_1, political]}, GeocoderAddressComponent{longName='United States', shortName='US', types=[country, political]}, GeocoderAddressComponent{longName='20878', shortName='20878', types=[postal_code]}], geometry=GeocoderGeometry{location=LatLng{lat=39.12093150, lng=-77.23554469999999}, locationType=RANGE_INTERPOLATED, viewport=LatLngBounds{southwest=LatLng{lat=39.11958316970851, lng=-77.23690283029150}, northeast=LatLng{lat=39.12228113029150, lng=-77.23420486970849}}, bounds=LatLngBounds{southwest=LatLng{lat=39.12093150, lng=-77.2355630}, northeast=LatLng{lat=39.12093280, lng=-77.23554469999999}}}, partialMatch=true}
	 * 
     * street_address indicates a precise street address.
     * route indicates a named route (such as "US 101").
     * intersection indicates a major intersection, usually of two major roads.
     * political indicates a political entity. Usually, this type indicates a polygon of some civil administration.
     * country indicates the national political entity, and is typically the highest order type returned by the Geocoder.
     * administrative_area_level_1 indicates a first-order civil entity below the country level. Within the United States, these administrative levels are states. Not all nations exhibit these administrative levels.
     * administrative_area_level_2 indicates a second-order civil entity below the country level. Within the United States, these administrative levels are counties. Not all nations exhibit these administrative levels.
	 * administrative_area_level_3 indicates a third-order civil entity below the country level. This type indicates a minor civil division. Not all nations exhibit these administrative levels.
     * colloquial_area indicates a commonly-used alternative name for the entity.
     * locality indicates an incorporated city or town political entity.
     * sublocality indicates a first-order civil entity below a locality. For some locations may receive one of the additional types: sublocality_level_1 through to sublocality_level_5. Each sublocality level is a civil entity. Larger numbers indicate a smaller geographic area.
     * neighborhood indicates a named neighborhood.
     * premise indicates a named location, usually a building or collection of buildings with a common name
     * subpremise indicates a first-order entity below a named location, usually a singular building within a collection of buildings with a common name.
     * postal_code indicates a postal code as used to address postal mail within the country.
     * natural_feature indicates a prominent natural feature.
     * airport indicates an airport.
     * park indicates a named park.
     * post_box indicates a specific postal box.
     * street_number indicates the precise street number.
     * floor indicates the floor of a building address.
     * room 
	 */
	public static final String GOOGLE_ADDRESS_COMPONENT_TYPE_COUNTY = "administrative_area_level_2";
	public static final String GOOGLE_ADDRESS_COMPONENT_TYPE_CITY = "locality";
	public static final String GOOGLE_ADDRESS_COMPONENT_TYPE_NEIGHBORHOOD = "neighborhood";
	public static final String GOOGLE_ADDRESS_COMPONENT_TYPE_STATE = "administrative_area_level_1";
	public static final String GOOGLE_ADDRESS_COMPONENT_TYPE_POSTAL_CODE = "postal_code";
	public static final String GOOGLE_ADDRESS_COMPONENT_TYPE_STREET_NUMBER = "street_number";
	public static final String GOOGLE_ADDRESS_COMPONENT_TYPE_ROUTE = "route";
	
	public static final int CLASS_TYPE_PRIVATE = 1;
	public static final int CLASS_TYPE_GROUP = 2;
	
	public static final String PROPERTIES = "properties";
	
	public static final String OFFICE_SEARCH_TYPE = "office";
	public static final String CUSTOMER_SEARCH_TYPE = "customer";
}
